package com.dog.framework.redis.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;

/**
 * @author liuxk
 * @date 2024/1/15 16:33
 *
 * 如果服务需要引入Redis发布订阅，则需要实现接口RedisMessageReceiver，
 *
 * 并且类名命名以RedisMessageReceiver后缀的格式。
 *
 */
@Slf4j
public class RedisListenerCondition implements Condition {


    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        // 如果服务需要引入Redis发布订阅，则需要实现接口RedisMessageReceiver，并且类名命名以RedisMessageReceiver后缀的格式
        final String CLASS_SUFFIX = "RedisMessageReceiver";
        String[] beanNames = context.getBeanFactory().getBeanDefinitionNames();
        for (String beanName : beanNames) {
            if (beanName.endsWith(CLASS_SUFFIX)) { // 判断Bean名字是否以指定后缀结尾
                return true;
            }
        }
        return false;
    }




}
